package com.greenold.payment.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.greenold.common.annotation.Excel;
import com.greenold.common.core.domain.BaseEntity;

/**
 * 支付对象 payment
 * 
 * @author ruoyi
 * @date 2025-10-15
 */
public class Payment extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private String id;

    /** 业务系统订单号 */
    @Excel(name = "业务系统订单号")
    private String bizOrderNo;

    /** 交易系统订单号（商户订单） */
    @Excel(name = "交易系统订单号", readConverterExp = "商=户订单")
    private String tradeOrderNo;

    /** 支付渠道【支付宝、微信、现金、免单挂账】 */
    @Excel(name = "支付渠道【支付宝、微信、现金、免单挂账】")
    private String payChannel;

    /** 交易类型【1月度费用 2服务费用】 */
    @Excel(name = "交易类型【1月度费用 2服务费用】")
    private String tradeType;

    /** 交易单状态【1-待付款,2-付款中,3-付款失败,4-已结算,5-取消订单,6-免单,7-挂账】 */
    @Excel(name = "交易单状态【1-待付款,2-付款中,3-付款失败,4-已结算,5-取消订单,6-免单,7-挂账】")
    private String tradeStatus;

    /** 收款人姓名 */
    @Excel(name = "收款人姓名")
    private String receiverName;

    /** 收款人账户ID */
    @Excel(name = "收款人账户ID")
    private String receiverAccountId;

    /** 付款人姓名 */
    @Excel(name = "付款人姓名")
    private String payerName;

    /** 付款人Id */
    @Excel(name = "付款人Id")
    private String payerId;

    /** 交易金额，单位：元 */
    @Excel(name = "交易金额，单位：元")
    private BigDecimal amount;

    /** 退款金额（单位：元） */
    @Excel(name = "退款金额", readConverterExp = "单=位：元")
    private BigDecimal refundAmount;

    /** 是否有退款 */
    @Excel(name = "是否有退款")
    private Long hasRefund;

    /** 第三方交易返回编码 */
    @Excel(name = "第三方交易返回编码")
    private String thirdReturnCode;

    /** 第三方交易返回提示消息 */
    @Excel(name = "第三方交易返回提示消息")
    private String thirdReturnMsg;

    /** 第三方交易返回信息json */
    @Excel(name = "第三方交易返回信息json")
    private String thirdReturnJson;

    /** 统一下单返回编码 */
    @Excel(name = "统一下单返回编码")
    private String unifiedOrderCode;

    /** 统一下单返回信息 */
    @Excel(name = "统一下单返回信息")
    private String unifiedOrderMsg;

    /** 统一下单返回信息json */
    @Excel(name = "统一下单返回信息json")
    private String unifiedOrderJson;

    /** 商户号 */
    @Excel(name = "商户号")
    private String merchantNo;

    /** 备注（订单门店，桌台信息） */
    @Excel(name = "备注", readConverterExp = "订=单门店，桌台信息")
    private String orderRemark;

    /** 二维码base64数据 */
    @Excel(name = "二维码base64数据")
    private String qrcodeBase64;

    /** open_id标识 */
    @Excel(name = "open_id标识")
    private String openId;

    /** 是否有效 */
    @Excel(name = "是否有效")
    private String isValid;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Date createdAt;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Date updatedAt;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String createdBy;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String updatedBy;

    /** 支付凭证 */
    @Excel(name = "支付凭证")
    private String extend1;

    /** 扩展字段2 */
    @Excel(name = "扩展字段2")
    private String extend2;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setBizOrderNo(String bizOrderNo) 
    {
        this.bizOrderNo = bizOrderNo;
    }

    public String getBizOrderNo() 
    {
        return bizOrderNo;
    }

    public void setTradeOrderNo(String tradeOrderNo) 
    {
        this.tradeOrderNo = tradeOrderNo;
    }

    public String getTradeOrderNo() 
    {
        return tradeOrderNo;
    }

    public void setPayChannel(String payChannel) 
    {
        this.payChannel = payChannel;
    }

    public String getPayChannel() 
    {
        return payChannel;
    }

    public void setTradeType(String tradeType) 
    {
        this.tradeType = tradeType;
    }

    public String getTradeType() 
    {
        return tradeType;
    }

    public void setTradeStatus(String tradeStatus) 
    {
        this.tradeStatus = tradeStatus;
    }

    public String getTradeStatus() 
    {
        return tradeStatus;
    }

    public void setReceiverName(String receiverName) 
    {
        this.receiverName = receiverName;
    }

    public String getReceiverName() 
    {
        return receiverName;
    }

    public void setReceiverAccountId(String receiverAccountId) 
    {
        this.receiverAccountId = receiverAccountId;
    }

    public String getReceiverAccountId() 
    {
        return receiverAccountId;
    }

    public void setPayerName(String payerName) 
    {
        this.payerName = payerName;
    }

    public String getPayerName() 
    {
        return payerName;
    }

    public void setPayerId(String payerId) 
    {
        this.payerId = payerId;
    }

    public String getPayerId() 
    {
        return payerId;
    }

    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }

    public void setRefundAmount(BigDecimal refundAmount) 
    {
        this.refundAmount = refundAmount;
    }

    public BigDecimal getRefundAmount() 
    {
        return refundAmount;
    }

    public void setHasRefund(Long hasRefund) 
    {
        this.hasRefund = hasRefund;
    }

    public Long getHasRefund() 
    {
        return hasRefund;
    }

    public void setThirdReturnCode(String thirdReturnCode) 
    {
        this.thirdReturnCode = thirdReturnCode;
    }

    public String getThirdReturnCode() 
    {
        return thirdReturnCode;
    }

    public void setThirdReturnMsg(String thirdReturnMsg) 
    {
        this.thirdReturnMsg = thirdReturnMsg;
    }

    public String getThirdReturnMsg() 
    {
        return thirdReturnMsg;
    }

    public void setThirdReturnJson(String thirdReturnJson) 
    {
        this.thirdReturnJson = thirdReturnJson;
    }

    public String getThirdReturnJson() 
    {
        return thirdReturnJson;
    }

    public void setUnifiedOrderCode(String unifiedOrderCode) 
    {
        this.unifiedOrderCode = unifiedOrderCode;
    }

    public String getUnifiedOrderCode() 
    {
        return unifiedOrderCode;
    }

    public void setUnifiedOrderMsg(String unifiedOrderMsg) 
    {
        this.unifiedOrderMsg = unifiedOrderMsg;
    }

    public String getUnifiedOrderMsg() 
    {
        return unifiedOrderMsg;
    }

    public void setUnifiedOrderJson(String unifiedOrderJson) 
    {
        this.unifiedOrderJson = unifiedOrderJson;
    }

    public String getUnifiedOrderJson() 
    {
        return unifiedOrderJson;
    }

    public void setMerchantNo(String merchantNo) 
    {
        this.merchantNo = merchantNo;
    }

    public String getMerchantNo() 
    {
        return merchantNo;
    }

    public void setOrderRemark(String orderRemark) 
    {
        this.orderRemark = orderRemark;
    }

    public String getOrderRemark() 
    {
        return orderRemark;
    }

    public void setQrcodeBase64(String qrcodeBase64) 
    {
        this.qrcodeBase64 = qrcodeBase64;
    }

    public String getQrcodeBase64() 
    {
        return qrcodeBase64;
    }

    public void setOpenId(String openId) 
    {
        this.openId = openId;
    }

    public String getOpenId() 
    {
        return openId;
    }

    public void setIsValid(String isValid) 
    {
        this.isValid = isValid;
    }

    public String getIsValid() 
    {
        return isValid;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    public void setCreatedBy(String createdBy) 
    {
        this.createdBy = createdBy;
    }

    public String getCreatedBy() 
    {
        return createdBy;
    }

    public void setUpdatedBy(String updatedBy) 
    {
        this.updatedBy = updatedBy;
    }

    public String getUpdatedBy() 
    {
        return updatedBy;
    }

    public void setExtend1(String extend1) 
    {
        this.extend1 = extend1;
    }

    public String getExtend1() 
    {
        return extend1;
    }

    public void setExtend2(String extend2) 
    {
        this.extend2 = extend2;
    }

    public String getExtend2() 
    {
        return extend2;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("bizOrderNo", getBizOrderNo())
            .append("tradeOrderNo", getTradeOrderNo())
            .append("payChannel", getPayChannel())
            .append("tradeType", getTradeType())
            .append("tradeStatus", getTradeStatus())
            .append("receiverName", getReceiverName())
            .append("receiverAccountId", getReceiverAccountId())
            .append("payerName", getPayerName())
            .append("payerId", getPayerId())
            .append("amount", getAmount())
            .append("refundAmount", getRefundAmount())
            .append("hasRefund", getHasRefund())
            .append("thirdReturnCode", getThirdReturnCode())
            .append("thirdReturnMsg", getThirdReturnMsg())
            .append("thirdReturnJson", getThirdReturnJson())
            .append("unifiedOrderCode", getUnifiedOrderCode())
            .append("unifiedOrderMsg", getUnifiedOrderMsg())
            .append("unifiedOrderJson", getUnifiedOrderJson())
            .append("merchantNo", getMerchantNo())
            .append("orderRemark", getOrderRemark())
            .append("qrcodeBase64", getQrcodeBase64())
            .append("openId", getOpenId())
            .append("isValid", getIsValid())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("createdBy", getCreatedBy())
            .append("updatedBy", getUpdatedBy())
            .append("remark", getRemark())
            .append("extend1", getExtend1())
            .append("extend2", getExtend2())
            .toString();
    }
}
